import request from '@/utils/request';

/**
 * 获取仪表盘概览数据
 */
export function getDashboardOverview() {
  return request.get('/api/chat/service/stats/overview');
}

/**
 * 获取会话统计数据
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 * @param {string} [params.serviceId] - 客服ID
 */
export function getSessionStats(params) {
  return request.get('/api/chat/service/session/stats', { params });
}

/**
 * 获取客服工作量统计
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 * @param {string} [params.serviceId] - 客服ID
 */
export function getServiceWorkloadStats(params) {
  return request.get('/api/chat/service/session/workload', { params });
}

/**
 * 获取客服评价统计
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 * @param {string} [params.serviceId] - 客服ID
 */
export function getServiceRatingStats(params) {
  return request.get('/api/stats/services/ratings', { params });
}

/**
 * 获取会话满意度统计
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 */
export function getSessionSatisfactionStats(params) {
  return request.get('/api/chat/service/session/satisfaction', { params });
}

/**
 * 获取热门问题统计
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期
 * @param {string} params.endDate - 结束日期
 * @param {number} [params.limit] - 返回数量限制
 */
export function getHotQuestions(params) {
  return request.get('/api/stats/questions/hot', { params });
}

/**
 * 导出统计数据
 * @param {string} type - 统计类型
 * @param {Object} params - 查询参数
 */
export function exportStats(type, params) {
  return request.get(`/api/stats/export/${type}`, {
    params,
    responseType: 'blob'
  });
}

/**
 * 统计数据相关API
 */

/**
 * 获取服务概况统计
 */
export function getOverviewStats() {
  return request.get('/api/chat/service/stats/overview');
}

/**
 * 获取客服工作统计数据
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期，格式：YYYY-MM-DD
 * @param {string} params.endDate - 结束日期，格式：YYYY-MM-DD
 * @param {number} [params.serviceId] - 客服ID，不传则查询所有客服
 */
export function getServiceStats(params) {
  return request.get('/api/chat/service/stats/services', { params });
}

/**
 * 获取客服每日统计数据
 * @param {Object} params - 查询参数
 * @param {string} params.date - 日期，格式：YYYY-MM-DD
 * @param {number} [params.serviceId] - 客服ID，不传则查询所有客服
 */
export function getServiceDailyStats(params) {
  return request.get('/api/chat/service/stats/daily', { params });
}

/**
 * 获取客服排名数据
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期，格式：YYYY-MM-DD
 * @param {string} params.endDate - 结束日期，格式：YYYY-MM-DD
 * @param {string} params.metric - 排名指标：total_sessions(会话总数), avg_response_time(平均响应时间), avg_session_duration(平均会话时长), satisfaction_avg_score(平均满意度)
 */
export function getServiceRanking(params) {
  return request.get('/api/chat/service/stats/ranking', { params });
}

/**
 * 获取对话标签统计
 * @param {Object} params - 查询参数
 * @param {string} params.startDate - 开始日期，格式：YYYY-MM-DD
 * @param {string} params.endDate - 结束日期，格式：YYYY-MM-DD
 */
export function getTagStats(params) {
  return request.get('/api/chat/service/stats/tags', { params });
}

/**
 * 获取今日实时统计数据
 */
export function getTodayStats() {
  return request.get('/api/chat/service/stats/today');
}

export default {
  getDashboardOverview,
  getSessionStats,
  getServiceWorkloadStats,
  getSessionSatisfactionStats,
  getServiceDailyStats,
  getServiceRanking,
  getTodayStats
}; 